package observer;

import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @autor Pedro Gazzola
 */
public class Maquina {

    String idMaquina;

    Maquina(String id) {
        idMaquina = id;
    }
    private ArrayList<MaquinaListener> maqListeners = new ArrayList<MaquinaListener>();

    public synchronized void addMaquinaListener(MaquinaListener maqListener) {
        if (!maqListeners.contains(maqListener)) {
            maqListeners.add(maqListener);
        }
    }

    public synchronized void removeMaquinaListener(MaquinaListener maqListener) {
        maqListeners.remove(maqListener);
    }

    public void disparaMaquinaLigada() {
        ArrayList<MaquinaListener> novo = new ArrayList<MaquinaListener>();
        synchronized (this) {
            novo = (ArrayList<MaquinaListener>) this.maqListeners.clone();
        }

        MaquinaEvent evento = new MaquinaEvent(this);

        Iterator iterator = novo.iterator();
        while (iterator.hasNext()) {
            ((MaquinaListener) (iterator.next())).maquinaAtivada(evento);
        }
    }
}
